import {AbstractControl, ValidatorFn} from '@angular/forms';

/**
 * 自定义验证规则：必填项
 * 此处加了一些对象的判断，用于以后扩展用，比如自定义的复杂控件需要表单上传一个数组，
 * 表单项的数组属性为空或者长度为0，则不满足非空验证，对象也是如此，属性个数为0，则认为是空
 * */
export function customizeRequiredValidator(key: string): ValidatorFn {
  return (control: AbstractControl): { [key: string]: any } => {
    return (control.value === null
      || typeof control.value === 'undefined'
      || (Array.isArray(control.value) && control.value.length === 0)
      || (typeof control.value === 'object' && Object.keys(control.value).length === 0)
      || (typeof control.value === 'string' && control.value === '')
    )
      ? {[key]: true} : null;
  };
}
